package com.personalink.management.repository;

import com.personalink.common.entity.PersonaConfig;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 人格配置数据访问层
 */
@Repository
public interface PersonaRepository extends MongoRepository<PersonaConfig, String> {
    
    /**
     * 查找所有启用的人格
     */
    List<PersonaConfig> findByEnabledTrue();
    
    /**
     * 根据类型查找人格
     */
    List<PersonaConfig> findByTypeAndEnabledTrue(String type);
    
    /**
     * 根据名称查找人格
     */
    Optional<PersonaConfig> findByNameAndEnabledTrue(String name);
    
    /**
     * 查找包含指定能力的人格
     */
    @Query("{'capabilities': {$in: [?0]}, 'enabled': true}")
    List<PersonaConfig> findByCapabilityAndEnabledTrue(String capability);
    
    /**
     * 根据人格特质查找
     */
    @Query("{'traits.?0': {$gte: ?1}, 'enabled': true}")
    List<PersonaConfig> findByTraitGreaterThanEqual(String traitName, Double minValue);
    
    /**
     * 统计启用的人格数量
     */
    long countByEnabledTrue();
    
    /**
     * 检查人格ID是否存在且启用
     */
    boolean existsByIdAndEnabledTrue(String id);
}